package org.pictual.business.dao;

import java.util.ResourceBundle;

import org.apache.log4j.Logger;

public class MySQLDAOFactory extends DAOFactory{

	private static ResourceBundle dbParams=ResourceBundle.getBundle("org.pictual.business.dao.MySQLDAOFactory");
//	private static Connection connection;
	public static final String DATASOURCE_NAME = dbParams.getString("dataSourceName");
	protected static Logger log= Logger.getLogger(MySQLDAOFactory.class);
	
//	/**
//	 * @deprecated
//	 */
//	public static Connection createConnection() throws SQLException, NamingException{
//		log.info("MySQLDAOFactory.createConnection(): Datasource a cargar: "+DATASOURCE_NAME);
//		return ServiceLocator.getInstance().getDatasource(DATASOURCE_NAME).getConnection();
//	}
//	
//	/**
//	 * @deprecated
//	 */
//	public static void closeConnection(){
//	try {
//		if(connection!=null){
//			connection.close();
//			connection=null;
//		}
//	} catch (SQLException e) {
//		log.error("MySQLDAOFactory.closeConnection(): Error al cerrar la conexion", e);
//	}
//}

	@Override
	public PalabraDAO getPalabraDAO() {
//		try{
//			if(connection==null){
//				connection=createConnection();
//				log.info("MySQLDAOFactory.getPalabraDAO() Conexion creada");
//			}
			MySqlPalabraDAO mySqlPalabraDAO = new MySqlPalabraDAO();
			
//			closeConnection();
			
			return mySqlPalabraDAO;
//		}catch (NamingException e) {
//			log.error("MySQLDAOFactory.getPalabraDAO(): NamingException", e);
//		}catch (SQLException e) {
//			log.error("MySQLDAOFactory.getPalabraDAO(): SQLException", e);
//		}
//		return null;
	}

	@Override
	public DefinicionDAO getDefinicionDAO() {
//		try{
//			if(connection==null){
//				connection=createConnection();
//				log.info("MySQLDAOFactory.getDefinicionDAO() Conexion creada");
//			}
			MySqlDefinicionDAO mySqlDefinicionDAO = new MySqlDefinicionDAO();
			
//			closeConnection();
			
			return mySqlDefinicionDAO;
//		}catch (NamingException e) {
//			log.error("MySQLDAOFactory.getDefinicionDAO(): NamingException", e);
//		}catch (SQLException e) {
//			log.error("MySQLDAOFactory.getDefinicionDAO(): SQLException", e);
//		}
//		return null;
	}

	@Override
	public IdiomaDAO getIdiomaDAO() {
//		try{
//			if(connection==null){
//				connection=createConnection();
//				log.info("MySQLDAOFactory.getIdiomaDAO() Conexion creada");
//			}
			MySqlIdiomaDAO mySqlIdiomaDAO = new MySqlIdiomaDAO();
			
//			closeConnection();
			
			return mySqlIdiomaDAO;
//		}catch (NamingException e) {
//			log.error("MySQLDAOFactory.getIdiomaDAO(): NamingException", e);
//		}catch (SQLException e) {
//			log.error("MySQLDAOFactory.getIdiomaDAO(): SQLException", e);
//			System.out.println("Mensaje: "+e.getMessage());
//		}
//		return null;
	}

	@Override
	public ImagenDAO getImagenDAO() {
//		try{
//			if(connection==null){
//				connection=createConnection();
//				log.info("MySQLDAOFactory.getImagenDAO() Conexion creada");
//			}
			MySqlImagenDAO mySqlImagenDAO = new MySqlImagenDAO();
			
//			closeConnection();
			
			return mySqlImagenDAO;
//		}catch (NamingException e) {
//			log.error("MySQLDAOFactory.getImagenDAO(): NamingException", e);
//		}catch (SQLException e) {
//			log.error("MySQLDAOFactory.getImagenDAO(): SQLException", e);
//		}
//		return null;
	}
	
	public SequenceGeneratorDAO getSequenceGeneratorDAO(){
//		try{
//			if(connection==null){
//				connection=createConnection();
//				log.info("MySQLDAOFactory.getSequenceGeneratorDAO() Conexion creada");
//			}
			MySqlSequenceGeneratorDAO mySqlSequenceGeneratorDAO = new MySqlSequenceGeneratorDAO();
			
//			closeConnection();
			
			return mySqlSequenceGeneratorDAO;
//		}catch (NamingException e) {
//			log.error("MySQLDAOFactory.getSequenceGeneratorDAO(): NamingException", e);
//		}catch (SQLException e) {
//			log.error("MySQLDAOFactory.getSequenceGeneratorDAO(): SQLException", e);
//		}
//		return null;
	}
	
}
